package config

import (
	"github.com/gin-gonic/gin"
)

// AdminConfig 后台公共配置
var AdminConfig = adminConfig{
	// 管理缓存键
	BackstageManageKey: "backstage:manage",
	// 角色缓存键
	BackstageRolesKey: "backstage:roles",
	// 租户缓存键
	BackstageTenantsKey: "backstage:tenants",
	// 令牌缓存键
	BackstageTokenKey: "backstage:token:",
	// 令牌的集合
	BackstageTokenSet: "backstage:token:set:",
	// 令牌过期时间
	BackstageTokenExpireTime: 86400,
	// 公共接口
	CommonUri: []string{
		"common:index:config:tenant", // 租户配置接口
	},
	// 免登录验证
	NotLoginUri: []string{
		"system:login",        // 登录接口
		"common:index:config", // 配置接口
		"system:tenant",
	},

	// 免权限验证
	NotAuthUri: []string{
		"system:logout",              // 退出登录
		"system:menu:menus",          // 系统菜单
		"system:menu:route",          // 菜单路由
		"system:admin:upInfo",        // 管理员更新
		"system:admin:self",          // 管理员信息
		"system:role:all",            // 所有角色
		"system:post:all",            // 所有岗位
		"system:dept:list",           // 所有部门
		"setting:dict:type:all",      // 所有字典类型
		"setting:dict:data:all",      // 所有字典数据
		"article:cate:all",           // 所有文章分类
		"common:index:config:tenant", // 租户配置接口
	},

	// 演示模式白名单
	ShowWhitelistUri: []string{
		"system:login",  // 登录接口
		"system:logout", // 退出登录
	},

	// 请求临时数据
	SuperAdminId:        1,
	SuperTenantId:       1,
	ReqTenantIdKey:      "tenant_id",
	ReqAuthReq:          "auth_req",
	ReqPostHierarchyKey: "post_hierarchy",
}

func (cnf adminConfig) GetAdminId(c *gin.Context) uint {
	adminId, ok := c.Get(cnf.ReqAdminIdKey)
	if !ok {
		return 0
	}
	return adminId.(uint)
}

func (cnf adminConfig) ReqTenantId(c *gin.Context) uint {
	departmentId, ok := c.Get(cnf.ReqTenantIdKey)
	if !ok {
		return 0
	}
	return departmentId.(uint)
}
